import axios, { AxiosResponse } from 'axios';
import { message } from 'antd';
import {API_BASE_URL} from "../config/constants";

const instance = axios.create({
    baseURL: API_BASE_URL,
    // 添加跨域支持
    withCredentials: true,
    timeout: 30000,
    headers: {
        'Content-Type': 'application/json'
    }
});

// // 请求拦截器
// instance.interceptors.request.use(
//     (config) => {
//         // 如果是文件上传，移除默认的 Content-Type
//         if (config.data instanceof FormData) {
//             delete config.headers['Content-Type'];
//         }
//
//         // 打印请求信息
//         console.log('Request:', {
//             url: config.url,
//             method: config.method,
//             params: config.params,
//             data: config.data instanceof FormData ? 'FormData' : config.data,
//             headers: config.headers,
//         });
//
//         return config;
//     },
//     (error) => {
//         console.error('Request error:', error);
//         return Promise.reject(error);
//     }
// );
//
// // 修改响应拦截器
// instance.interceptors.response.use(
//     (response) => {
//         // 打印完整的响应对象
//         console.log('Full Response:', response);
//
//         const { data, status } = response;
//         console.log('Response Status:', status);
//         console.log('Response Data:', data);
//
//         // 处理成功响应
//         if (status === 200) {
//             // 如果后端返回的是标准格式
//             if (data && typeof data === 'object' && 'code' in data) {
//                 if (data.code === 200) {
//                     return data;
//                 } else {
//                     message.error(data.message || '请求失败');
//                     return Promise.reject(new Error(data.message || '请求失败'));
//                 }
//             }
//             // 如果后端直接返回数据（没有包装对象）
//             return {
//                 code: 200,
//                 data: data,
//                 message: 'success'
//             };
//         }
//
//         message.error(`请求失败: ${status}`);
//         return Promise.reject(new Error(`请求失败: ${status}`));
//     },
//     (error) => {
//         console.error('Response error:', error);
//         if (error.response) {
//             console.error('Error Response:', error.response);
//             console.error('Error Status:', error.response.status);
//             console.error('Error Data:', error.response.data);
//         }
//
//         const errorMessage = error.response?.data?.message || error.message || '网络错误';
//         message.error(errorMessage);
//         return Promise.reject(error);
//     }
// );
// 请求拦截器
// 请求拦截器
instance.interceptors.request.use(
    (config) => {
        console.log('发送请求配置:', {
            url: config.url,
            method: config.method,
            data: config.data,
            headers: config.headers
        });
        return config;
    },
    (error) => {
        console.error('请求拦截器错误:', error);
        return Promise.reject(error);
    }
);

// 响应拦截器
instance.interceptors.response.use(
    (response: AxiosResponse) => {
        console.log('原始响应数据:', response);
        // 返回完整的响应对象
        return response;
    },
    (error) => {
        console.error('响应拦截器错误:', error);
        return Promise.reject(error);
    }
);
export default instance;
